/*
* Copyright (C) 2013 Cyril Mottier (http://cyrilmottier.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.cyrilmottier.polaris2.maps;
import com.cyrilmottier.polaris2.maps.model.CameraPosition;
import com.cyrilmottier.polaris2.maps.model.Circle;
import com.cyrilmottier.polaris2.maps.model.CircleOptions;
import com.cyrilmottier.polaris2.maps.model.GroundOverlay;
import com.cyrilmottier.polaris2.maps.model.GroundOverlayOptions;
import com.cyrilmottier.polaris2.maps.model.LatLng;
import com.cyrilmottier.polaris2.maps.model.Marker;
import com.cyrilmottier.polaris2.maps.model.MarkerOptions;
import com.cyrilmottier.polaris2.maps.model.Polygon;
import com.cyrilmottier.polaris2.maps.model.PolygonOptions;
import com.cyrilmottier.polaris2.maps.model.Polyline;
import com.cyrilmottier.polaris2.maps.model.PolylineOptions;
import com.cyrilmottier.polaris2.maps.model.TileOverlay;
import com.cyrilmottier.polaris2.maps.model.TileOverlayOptions;
import android.location.Location;
import android.view.View;
public final class GoogleMap {
public static final int MAP_TYPE_HYBRID = com.google.android.gms.maps.GoogleMap.MAP_TYPE_HYBRID;
public static final int MAP_TYPE_NONE = com.google.android.gms.maps.GoogleMap.MAP_TYPE_NONE;
public static final int MAP_TYPE_NORMAL = com.google.android.gms.maps.GoogleMap.MAP_TYPE_NORMAL;
public static final int MAP_TYPE_SATELLITE = com.google.android.gms.maps.GoogleMap.MAP_TYPE_SATELLITE;
public static final int MAP_TYPE_TERRAIN = com.google.android.gms.maps.GoogleMap.MAP_TYPE_TERRAIN;
public interface CancelableCallback {
void onFinish();
void onCancel();
}
public interface InfoWindowAdapter {
View getInfoWindow(Marker paramMarker);
View getInfoContents(Marker paramMarker);
}
public interface OnCameraChangeListener {
void onCameraChange(CameraPosition position);
}
public interface OnInfoWindowClickListener {
void onInfoWindowClick(Marker paramMarker);
}
public interface OnMapClickListener {
void onMapClick(LatLng paramLatLng);
}
public interface OnMapLongClickListener {
void onMapLongClick(LatLng paramLatLng);
}
public interface OnMarkerClickListener {
boolean onMarkerClick(Marker paramMarker);
}
public interface OnMarkerDragListener {
void onMarkerDragStart(Marker paramMarker);
void onMarkerDrag(Marker paramMarker);
void onMarkerDragEnd(Marker paramMarker);
}
public interface OnMyLocationChangeListener {
void onMyLocationChange(Location paramLocation);
}
final com.google.android.gms.maps.GoogleMap mOriginal;
GoogleMap(com.google.android.gms.maps.GoogleMap original) {
mOriginal = original;
}
public final Circle addCircle(CircleOptions options) {
final com.google.android.gms.maps.model.Circle original = mOriginal.addCircle(options.mOriginal);
return original == null ? null : Circle.obtain(original);
}
public final GroundOverlay addGroundOverlay(GroundOverlayOptions options) {
final com.google.android.gms.maps.model.GroundOverlay original = mOriginal.addGroundOverlay(options.mOriginal);
return original == null ? null : GroundOverlay.obtain(original);
}
public Marker addMarker(MarkerOptions options) {
final com.google.android.gms.maps.model.Marker original = mOriginal.addMarker(options.mOriginal);
return original == null ? null : Marker.obtain(original);
}
public final Polygon addPolygon(PolygonOptions options) {
final com.google.android.gms.maps.model.Polygon original = mOriginal.addPolygon(options.mOriginal);
return original == null ? null : Polygon.obtain(original);
}
public final Polyline addPolyline(PolylineOptions options) {
final com.google.android.gms.maps.model.Polyline original = mOriginal.addPolyline(options.mOriginal);
return original == null ? null : Polyline.obtain(original);
}
public final TileOverlay addTileOverlay(TileOverlayOptions options) {
final com.google.android.gms.maps.model.TileOverlay original = mOriginal.addTileOverlay(options.mOriginal);
return original == null ? null : TileOverlay.obtain(original);
}
public void animateCamera(CameraUpdate update) {
mOriginal.animateCamera(update.mOriginal);
}
public void animateCamera(CameraUpdate update, CancelableCallback callback) {
final CancelableCallback fCallback = callback;
mOriginal.animateCamera(update.mOriginal, callback == null ? null : new com.google.android.gms.maps.GoogleMap.CancelableCallback() {
@Override
public void onFinish() {
fCallback.onFinish();
}
@Override
public void onCancel() {
fCallback.onCancel();
}
});
}
public void animateCamera(CameraUpdate update, int durationMs, CancelableCallback callback) {
final CancelableCallback fCallback = callback;
mOriginal.animateCamera(update.mOriginal, durationMs,
callback == null ? null : new com.google.android.gms.maps.GoogleMap.CancelableCallback() {
@Override
public void onFinish() {
fCallback.onFinish();
}
@Override
public void onCancel() {
fCallback.onCancel();
}
});
}
public void clear() {
mOriginal.clear();
}
public CameraPosition getCameraPosition() {
final com.google.android.gms.maps.model.CameraPosition original = mOriginal.getCameraPosition();
return original == null ? null : CameraPosition.obtain(original);
}
public int getMapType() {
return mOriginal.getMapType();
}
public float getMaxZoomLevel() {
return mOriginal.getMaxZoomLevel();
}
public float getMinZoomLevel() {
return mOriginal.getMinZoomLevel();
}
public Location getMyLocation() {
return mOriginal.getMyLocation();
}
public Projection getProjection() {
final com.google.android.gms.maps.Projection original = mOriginal.getProjection();
return original == null ? null : new Projection(original);
}
public UiSettings getUiSettings() {
final com.google.android.gms.maps.UiSettings original = mOriginal.getUiSettings();
return original == null ? null : new UiSettings(original);
}
public boolean isIndoorEnabled() {
return mOriginal.isIndoorEnabled();
}
public boolean isMyLocationEnabled() {
return mOriginal.isMyLocationEnabled();
}
public boolean isTrafficEnabled() {
return mOriginal.isTrafficEnabled();
}
public void moveCamera(CameraUpdate update) {
mOriginal.moveCamera(update.mOriginal);
}
public boolean setIndoorEnabled(boolean enabled) {
return mOriginal.setIndoorEnabled(enabled);
}
public void setLocationSource(LocationSource source) {
final LocationSource fSource = source;
mOriginal.setLocationSource(fSource == null ? null : new com.google.android.gms.maps.LocationSource() {
@Override
public void activate(final com.google.android.gms.maps.LocationSource.OnLocationChangedListener listener) {
fSource.activate(new com.cyrilmottier.polaris2.maps.LocationSource.OnLocationChangedListener() {
@Override
public void onLocationChanged(final Location location) {
listener.onLocationChanged(location);
}
});
}
@Override
public void deactivate() {
fSource.deactivate();
}
});
}
public void setMapType(int type) {
mOriginal.setMapType(type);
}
public void setMyLocationEnabled(boolean enabled) {
mOriginal.setMyLocationEnabled(enabled);
}
public void setOnCameraChangeListener(OnCameraChangeListener listener) {
final OnCameraChangeListener fListener = listener;
mOriginal.setOnCameraChangeListener(fListener == null ? null : new com.google.android.gms.maps.GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(com.google.android.gms.maps.model.CameraPosition position) {
fListener.onCameraChange(CameraPosition.obtain(position));
}
});
}
public void setOnMapClickListener(OnMapClickListener listener) {
final OnMapClickListener fListener = listener;
mOriginal.setOnMapClickListener(fListener == null ? null : new com.google.android.gms.maps.GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(com.google.android.gms.maps.model.LatLng point) {
fListener.onMapClick(LatLng.obtain(point));
}
});
}
public final void setOnMapLongClickListener(OnMapLongClickListener listener) {
final OnMapLongClickListener fListener = listener;
mOriginal.setOnMapLongClickListener(fListener == null ? null : new com.google.android.gms.maps.GoogleMap.OnMapLongClickListener() {
@Override
public void onMapLongClick(com.google.android.gms.maps.model.LatLng point) {
fListener.onMapLongClick(LatLng.obtain(point));
}
});
}
public void setOnMarkerClickListener(OnMarkerClickListener listener) {
final OnMarkerClickListener fListener = listener;
mOriginal.setOnMarkerClickListener(fListener == null ? null : new com.google.android.gms.maps.GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(com.google.android.gms.maps.model.Marker marker) {
return fListener.onMarkerClick(Marker.obtain(marker));
}
});
}
public final void setInfoWindowAdapter(InfoWindowAdapter adapter) {
final InfoWindowAdapter fAdapter = adapter;
mOriginal.setInfoWindowAdapter(fAdapter == null ? null : new com.google.android.gms.maps.GoogleMap.InfoWindowAdapter() {
@Override
public View getInfoWindow(com.google.android.gms.maps.model.Marker marker) {
return fAdapter.getInfoWindow(Marker.obtain(marker));
}
@Override
public View getInfoContents(com.google.android.gms.maps.model.Marker marker) {
return fAdapter.getInfoContents(Marker.obtain(marker));
}
});
}
public final void setOnInfoWindowClickListener(OnInfoWindowClickListener listener) {
final OnInfoWindowClickListener fListener = listener;
mOriginal.setOnInfoWindowClickListener(
fListener == null ? null : new com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(com.google.android.gms.maps.model.Marker marker) {
fListener.onInfoWindowClick(Marker.obtain(marker));
}
});
}
public final void setOnMarkerDragListener(OnMarkerDragListener listener) {
final OnMarkerDragListener fListener = listener;
mOriginal.setOnMarkerDragListener(fListener == null ? null : new com.google.android.gms.maps.GoogleMap.OnMarkerDragListener() {
@Override
public void onMarkerDrag(com.google.android.gms.maps.model.Marker marker) {
fListener.onMarkerDrag(Marker.obtain(marker));
}
@Override
public void onMarkerDragEnd(com.google.android.gms.maps.model.Marker marker) {
fListener.onMarkerDragEnd(Marker.obtain(marker));
}
@Override
public void onMarkerDragStart(com.google.android.gms.maps.model.Marker marker) {
fListener.onMarkerDragStart(Marker.obtain(marker));
}
});
}
public final void setOnMyLocationChangeListener(OnMyLocationChangeListener listener) {
final OnMyLocationChangeListener fListener = listener;
mOriginal.setOnMyLocationChangeListener(
fListener == null ? null : new com.google.android.gms.maps.GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
fListener.onMyLocationChange(location);
}
});
}
public void setTrafficEnabled(boolean enabled) {
mOriginal.setTrafficEnabled(enabled);
}
public void stopAnimation() {
mOriginal.stopAnimation();
}
}